// 原理
var name1
var num1
var num2

// 1.代码编译阶段创建全局的GlobalObject对象 go,
// window.window.window指向都是一个变量
var gloableObject = {
  // 初始化内置类
  String: '类',
  Math: '类',
  Date: '类',
  setTimeout: '定时器',
  window: gloableObject,
  //   var关键字定义的变量作用域提升
  name: undefined,
  num1: undefined,
  num2: undefined,
}
// 2.此时在浏览器环境下，window对象下就会加上，window.name1,window.num1,window.num2,
console.log('全局的window对象', window)

// 3.代码执行时：创建调用栈,才会为对应的变量进行赋值操作
name1 = 'jd'
console.log('此时name1已经被创建，已经被赋值', name1)
console.log('此时num1作用域提升了，已经被创建可以被访问，但是值为undefined', num1)
num1 = 2
num2 = 3

// 案例
console.log('作用域提升age', age)
var age = 18
